Collaborative environments are becoming pervasive in the industry. One area of collaboration that is critical to an enterprise is that which is associated with new software development. During software development a variety of different developers can be working on the same or dependent modules at the same time and in entirely different processing environments. A variety of different project life-cycle and version control systems attempt to coordinate project activities in scenarios such as this.
One management and support aspect, which is associated with software project development, is version control. That is, some modules may be in various stages of development, such as: bug fixes, enhancements, lacking certain features, production readiness. Moreover, sometimes an enhancement may have to be rolled back to a prior pre-enhancement version when problems are detected. Thus, a robust version control system is a must in project development environments.
Typically, version control systems are used to coordinate and manage collaboration on projects. The projects often include many sub components, such as coding modules. Under such circumstances, the coding modules are managed by the version control systems exclusively as individual files.
The problem with this approach is that often there is a great deal of inter-file dependency for any particular project. The management of inter-file dependencies is usually not even attempted by traditional version control systems; rather, the users themselves have to manually manage the dependencies when loading, merging, and updating components of the project. This means that the users have to be savvy and skilled in the use of the version control systems. Another compounding issue is that developers may be representing the project in an object model, such that the developers are forced to map and think about the object model in terms of files in order to properly interface and work with the version control systems. Managing complex dependencies at the individual file level can often be overwhelming and nearly impossible from a practical standpoint in a complex coding project; thus, version control may not be embraced because of the deficiencies of version control or may be used with a great deal of effort and time to adapt it to the needs of the project.
Thus, improved mechanisms are needed for improved version-control within a project-based environment.